package com.itcaius.weblog.common.domain.mapper;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.itcaius.weblog.common.domain.dos.UserDO;
import org.apache.ibatis.annotations.Mapper;

import java.time.LocalDateTime;

/**
 * @author Caius
 * @description
 * @since Created in 2025-04-17
 */
public interface UserMapper extends BaseMapper<UserDO> {

    /**
     * 通过用户名查询用户默认方法
     * @param username 用户名
     * @return
     */
    default UserDO findAllByUsername(String username){
        LambdaQueryWrapper<UserDO> wrapper = new LambdaQueryWrapper<>();
        wrapper.eq(UserDO::getUsername, username);
        return selectOne(wrapper);
    }

    /**
     * 通过用户名修改用户密码
     * @param username 用户名
     * @param password 修改之后的密码
     * @return 影响的行数
     */
    default int updatePasswordByUsername(String username, String password){
        LambdaUpdateWrapper<UserDO> wrapper = new LambdaUpdateWrapper<>();
        // 设置更新的字段
        wrapper.set(UserDO::getPassword, password);
        wrapper.set(UserDO::getUpdateTime, LocalDateTime.now());

        //查询条件
        wrapper.eq(UserDO::getUsername, username);

        return update(null, wrapper);
    }
}
